#include<iostream>
#include<unordered_map>
using namespace std;

/* 
    unordered_map 是 C++ 标准模板库（STL）中的一个关联容器，提供了基于哈希表的键值对存储。
    它允许通过键快速访问对应的值，具有平均常数时间复杂度的查找、插入和删除操作。

    unordered_map 的基本操作：
    insert({key, value})：插入一个键值对。
    operator[]：通过键访问或插入元素。
    find(key)：查找键对应的元素，返回一个迭代器。
    erase(key)：删除指定键的元素。
    size()：返回容器中元素的个数。
    empty()：判断容器是否为空。
*/



int main() {
    // 初始化一个空的 unordered_map，键类型为 string，值类型为 int
    unordered_map<string, int> umap{{"one", 1}, {"two", 2}, {"three", 3}};

    // 插入键值对
    umap["apple"] = 1;
    umap["banana"] = 2;
    umap["orange"] = 3;

    // 访问元素
    cout << "apple: " << umap["apple"] << endl;
    cout << "banana: " << umap["banana"] << endl;

    // 检查键是否存在
    if (umap.find("orange") != umap.end()) {
        cout << "Found orange with value: " << umap["orange"] << endl;
    } else {
        cout << "orange not found" << endl;
    }

    // 删除元素
    umap.erase("banana");
    cout << "After erasing banana, size of umap: " << umap.size() << endl;

    // 遍历 unordered_map
    for (const auto& pair : umap) {
        cout << pair.first << ": " << pair.second << endl;
    }

    return 0; 
}